import Vue from 'vue'

Vue.filter('filterTime',(time,formater,...args)=>{
  if (!time) return time
 
  // let time = timeStamp.toString().replace("/Date(", "").replace(")/", "")
  let date = new Date(time.replace(/-/g,'/')) // parseInt(time)
 
  let fmt = (formater != null) ? formater : 'yyyy-MM-dd hh:mm:ss'
  let o = {
      'M+': date.getMonth() + 1, //月
      'd+': date.getDate(),  // 日
      'h+': date.getHours(), // 小时
      'm+': date.getMinutes(), // 分
      's+': date.getSeconds(), // 秒
      "q+": Math.floor((date.getMonth() + 3) / 3),  // 季度
      "S": date.getMilliseconds()  // 毫秒
  }
 
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (let k in o) {
      if (new RegExp("(" + k + ")").test(fmt))
        
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
  }
  
  return fmt
})

Vue.filter('filterAstro',(strBirthday,...args)=>{  //星座过滤器
  if (!strBirthday) return '神仙'
  var birthYear,birthMonth,birthDay
  var strBirthdayArr=strBirthday.split("-")
  if (strBirthdayArr.length>0) {
      birthYear = strBirthdayArr[0]
      birthMonth = strBirthdayArr[1]
      birthDay = strBirthdayArr[2]
  } 
  // if (strBirthday.split("年").length>0) { 
  //     birthYear=strBirthday.split("年")[0]
  //     birthMonth = strBirthday.split("年")[1].split("月")[0]
  //     birthDay = strBirthday.split("年")[1].split("月")[1].split("日")[0]
  // } 
  var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"
  var arr=[20,19,21,21,21,22,23,23,23,23,22,22]
  return s.substr(birthMonth*2-(birthDay< arr[birthMonth-1]?2:0),2)
})

Vue.filter('filterNumber',(num, formater, type,...args)=>{
  let arr_txt = ["千", "万", "百万", "千万", "亿万"]
  let arr_word = ["K+", "w+", "m+", "kw+", "亿万"]
  // type = type || 'word'
  let arr = type === 'word' || !type ? arr_word : arr_txt
  let newnum = Number(num)   // parseInt parseFloat
  if (newnum < 1000) {
    return newnum
  }
  if (1000 <= newnum && newnum < 10000) {
    newnum = parseFloat((newnum/1000).toFixed(2)) + arr[0]
  } else if (10000 <= newnum) {
    newnum = parseFloat((newnum/10000).toFixed(2))+ arr[1]
  }
  return newnum
})

/**
 * 过滤时间
 * ago (多久前)
 * day (昨天)
 */
Vue.filter('timeToAgo',(timer, type,...args)=>{
	if(!timer) return ''
	timer = new Date(timer).valueOf()
	var arrTimestamp = (timer + '').split('')
	for (var start = 0; start < 13; start++) {
		if (!arrTimestamp[start]) {
			arrTimestamp[start] = '0'
		}
	}
	switch(type){
		case 'ago':
			timer = arrTimestamp.join('') * 1
			var minute = 1000 * 60
			var hour = minute * 60
			var day = hour * 24
			var halfamonth = day * 15
			var month = day * 30
			var now = new Date().getTime()
			var diffValue = now - timer
			// 如果本地时间反而小于变量时间
			if (diffValue < 0) {
				return '不久前'
			}
			// 计算差异时间的量级
			var monthC = diffValue / month
			var weekC = diffValue / (7 * day)
			var dayC = diffValue / day
			var hourC = diffValue / hour
			var minC = diffValue / minute
			// 数值补0方法
			var zero = function(value) {
				if (value < 10) {
					return '0' + value
				}
				return value
			}
			// 使用
			if (monthC > 12) {
				// 超过1年，直接显示年月日
				return (function() {
					var date = new Date(timer);
					return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日'
				})()
			} else if (monthC >= 1) {
				return parseInt(monthC) + "月前"
			} else if (weekC >= 1) {
				return parseInt(weekC) + "周前"
			} else if (dayC >= 1) {
				return parseInt(dayC) + "天前"
			} else if (hourC >= 1) {
				return parseInt(hourC) + "小时前"
			} else if (minC >= 1) {
				return parseInt(minC) + "分钟前"
			}
			return '刚刚';
			break
		case 'day':
			var Etime = arrTimestamp.join('') * 1 //参数时间
			var Etimer = new Date(Etime)
			var Ntime = new Date().getTime() //现在时间
			var Ntimer = new Date()
			var Eyear = Etimer.getFullYear() //取得4位数的年份
			var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1 //取得日期中的月份，其中0表示1月，11表示12月
			var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate() //返回日期月份中的天数（1到31）
			var Eweek = Etimer.getDay() //返回日期月份中的周
			var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours() //返回日期中的小时数（0到23）
			var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes() //返回日期中的分钟数（0到59）
			var today = new Date(new Date().setHours(0, 0, 0, 0)) / 1000 * 1000 //今天0点时间戳
			var yesterday = today - 24 * 60 * 60 * 1000 //昨天0点时间戳
			var beforeWeek = today - 7 * 24 * 60 * 60 * 1000 //一周前0点时间戳
			// 今天的时间
			if (today < Etime) {
				if (Ehour < 12) {
					return '上午' + Ehour + ':' + Eminute
				} else {
					return '下午' + Ehour + ':' + Eminute
				}
			}
			// 昨天的时间
			if (yesterday < Etime < today) {
				return '昨天'
			}
			// 一周内的时间
			if (beforeWeek < Etime) {
				if (Eweek == 0) {
					return "星期日"
				} else if (Eweek == 1) {
					return "星期一"
				} else if (Eweek == 2) {
					return "星期二"
				} else if (Eweek == 3) {
					return "星期三"
				} else if (Eweek == 4) {
					return "星期四"
				} else if (Eweek == 5) {
					return "星期五"
				} else if (Eweek == 6) {
					return "星期六"
				}
			}
			// 更早的时间
			return Eyear + '-' + Emonth + '-' + Edate
			break
		default :
			return timer
	}
})




Vue.filter('dateFormat',function(dateStr,time){
                //得到特定的时间
                var date = new Date(dateStr);
                var year = date.getFullYear();
                //ES6语法填充：var month = (date.getMonth()+1).toString().padStart(2, '0');
                var month = date.getMonth()+1<10 ? '0'+ (date.getMonth()+1) : date.getMonth()+1;
                var day = date.getDate()<10 ? '0' + date.getDate() : date.getDate();
                var hh = date.getHours()<10 ? '0' + date.getHours() : date.getHours();
                var mm = date.getMinutes()<10 ? '0' + date.getMinutes() : date.getMinutes();
                var ss = date.getSeconds()<10 ? '0' + date.getSeconds() : date.getSeconds();
				
                return `${year}年${month}月${day}号 `;
                // if(time&&time.toLowerCase() === 'yyyy-mm-dd'){
                //     // 用模板字符串拼接
                //     return `${year}年${month}月${day}号`;
                // }else if(time&&time.toLowerCase() === 'hh:mm:ss'){
                //     return `${hh}:${mm}:${ss}`;
                // }else{
                //     return `${year}年${month}月${day}号 `;
                // }
             });